var createNewCatWindow = function(config) {
	// 将字段加入到form中，以利用form进行样式排列
	this.createForm = new Ext.FormPanel({
				labelWidth : 120,
				labelAlign : 'right',
				bodyStyle : 'padding:10px 10px 0',
				autoScroll : false,
				items : [new Ext.form.TextField({
									fieldLabel : '索引类别名称',
									name : 'diname',
									allowBlank : false,
									width : 150,
									maxLength : 32
								}), new Ext.form.TextField({
									fieldLabel : '索引类别唯一标识',
									name : 'dikey',
									width : 150,
									maxLength : 32
								}),/*
									 * new Ext.form.TextField({ fieldLabel :
									 * '索引类别内部编码', width : 150, name : 'dicode'
									 * }),
									 */new Ext.form.TextField({
									fieldLabel : '索引类别拼音识别码',
									width : 150,
									name : 'dipycode'
								}), new Ext.form.TextField({
									fieldLabel : '索引类别外文识别码',
									width : 150,
									name : 'diywcode'
								}), new Ext.form.TextField({
									fieldLabel : '类别索引排序',
									width : 150,
									name : 'diorder'
								}), new Ext.form.RadioGroup({
									fieldLabel : '类别索引有效性',
									items : [{
												boxLabel : '有效',
												name : 'divalid',
												inputValue : '1',
												checked : true
											}, {
												boxLabel : '无效',
												name : 'divalid',
												inputValue : '0'
											}]
								})/*
									 * , new Ext.form.TextField({ hidden : true,
									 * width : 10, name : 'diparent' }), new
									 * Ext.form.TextField({ hidden : true, width :
									 * 10, name : 'dichildren' }), new
									 * Ext.form.TextField({ hidden : true, width :
									 * 10, name : 'dilevel' })
									 */]
			});

	Ext.apply(this, config);
	createNewCatWindow.superclass.constructor.call(this, {
				id : 'createNewCatWindow',
				closeAction : 'hide',
				layout : 'fit',
				width : 400,
				height : 300,
				modal : true,
				title : '添加分类',
				items : this.createForm,
				buttons : [{
							text : '确定',
							handler : function(button, e) {
								this.doCreate(e);
							},
							scope : this
						}, {
							text : '取消',
							handler : function(button, e) {
								this.resetInput();
								this.fireEvent('cancelClicked', this, e);
								if (this.cancelHandler) {
									this.cancelHandler.call(this.scope || this,
											this, e);
								} else {
									this.hide();
								}
							},
							scope : this
						}]
			});
};

Ext.extend(createNewCatWindow, Ext.Window, {
	/** 父级索引ID */
	diparent : null,
	/** 是否存在子节点 */
	dichildren : 1,
	/** 类别索引层级 */
	dilevel : null,
	/** 新建表单 */
	createForm : null,
	/** 确定按钮事件处理器 */
	okHandler : null,
	/** 取消按钮事件处理器 */
	cancelHandler : null,
	/** 事件触发时对象的工作域 */
	scope : null,

	/**
	 * 显示窗口
	 */
	showWindow : function(diparent, dilevel) {
		this.show();
		var form = this.createForm.getForm();
		form.reset();
        form.findField('dikey').setValue(Ext.getCmp('ddform').form.findField('DI_KEY').getValue() + '_');
	},

	/**
	 * 将输入框清空
	 */
	resetInput : function() {
		var form = this.createForm.getForm();
		form.reset();
	},

	/**
	 * 添加分类
	 */
	doCreate : function(event) {
		var form = this.createForm.getForm();
		if (this.diparent == "" || this.diparent == null) {
			this.diparent = "-1";
		}
		if (form.isValid()) {
			form.submit({
				url : context + '/system/ddindex.do?method=insert',
				waitMsg : '保存中...',
				method : 'POST',/**/
				params : {
					diparent : this.diparent,
					dichildren : this.dichildren,
					dilevel : this.dilevel
				},
				scope : this,
				success : function(form, action) {
					this.resetInput();
					// 执行确定处理
					this.fireEvent('okClicked', this);
					if (this.okHandler) {
						this.okHandler.call(this.scope || this, this, event);
					} else {
						this.hide();
					}

					form.responseText; // 返回的结果
				},
				failure : function(form, action) {
					if (action.failureType === Ext.form.Action.CONNECT_FAILURE) {
						Ext.Msg.alert('保存失败', 'Status:'
										+ action.response.status + ': '
										+ action.response.statusText);
					}
					if (action.failureType === Ext.form.Action.SERVER_INVALID) {
						// server responded with success = false
						Ext.Msg.alert('', '保存失败');
					}

				}
			});

		} else {
			Ext.MessageBox.alert('错误', '请修正非法数据后再保存！');
			return;
		}
	},

	// private
	initComponent : function() {
		createNewCatWindow.superclass.initComponent.call(this);
		this.addEvents(
				/**
				 * @event okClicked 当确定按钮被点击时触发
				 * @param {createNewCatWindow}
				 *            this
				 */
				'okClicked',
				/**
				 * @event okClicked 当取消按钮被点击时触发
				 * @param {createNewCatWindow}
				 *            this
				 */
				'cancelClicked');
	}

});
var ddIds;
var deleteManager = function(config) {
	Ext.apply(this, config);
	this.id = 'deletemanager';
	// this.ids = null;
	this.showConfirm = function() {
		Ext.MessageBox.confirm('删除', '是否删除所选节点及其子节点?', this.doDelete);

	};
	this.doDelete = function(btn) {

		if (btn == "yes") {
			Ext.Ajax.request({
						url : context + '/system/ddindex.do?method=delete',
						waitMsg : '操作处理中...',
						method : 'POST',
						params : {
							'ids' : ddIds
						},
						success : function(form, action) {
							var pNode = Ext.getCmp("dataIndexTree")
									.getSelectionModel().getSelectedNode().parentNode;
							pNode.reload();
							Ext.getCmp("ddform").getForm().reset();
							Ext.getCmp('toolbar').items.items[0].disable();
							Ext.getCmp('toolbar').items.items[2].disable();
							Ext.getCmp("btnSave").disable();
							Ext.Msg.alert('操作结束', '删除成功');
						},
						failure : function() {
							Ext.Msg.alert('', '删除失败');
						}
					});

		}

	};
};

function ddtree(id, tlt) {

	var newCatWindow = new createNewCatWindow();
	var createNew = function(b, e) {
		newCatWindow.showWindow();

	};

	var deletemanager = new deleteManager();
	var deleteDD = function() {
		deletemanager.showConfirm(ddIds);
	};

	var panel = new Ext.Panel({
				id : 'ddtabs',
				region : 'center', // a center region is ALWAYS
				// required for border layout
				deferredRender : false,
				enableTabScroll : true,
				margins : '0 0 0 0',
				tbar : new Ext.Toolbar({
							id : 'toolbar',
							autoWidth : true,
							autoShow : true,
							items : [{
										iconCls : 'adddd',
										iconCls : 'adddd',
										text : '添加子类别',
										handler : createNew,
										scope : this
									}, '-', {
										id : 'deldd',
										iconCls : 'deldd',
										text : '删除',
										handler : deleteDD,
										scope : this
									}]
						}),
				items : []
			});

	var root = new Ext.tree.AsyncTreeNode({
				text : '数据类别',
				draggable : false,
				iconCls : 'root',
				id : '-1'
			});

	var loader = new Ext.tree.TreeLoader({
				url : context + '/system/ddindex.do?method=managetree'
			});

	var tree = new Ext.tree.TreePanel({
		id : 'dataIndexTree',
		region : 'west',
		title : '数据类别结构树',
		useArrows : true,
		autoScroll : true,
		animate : false,
		enableDD : false,
		containerScroll : true,
		rootVisible : true,
		singleExpand : false,
		animate : true,
		frame : false,
		split : true,
		width : 200,
		collapsible : true,
		root : root,
		// auto create TreeLoader
		loader : loader,
		listeners : {
			/*
			 * 'render' : function(tp) {
			 * tp.getSelectionModel().on('selectionchange', function(tree, node) {
			 * if (node && node.leaf) { //
			 * showMenuOnTab(node.text,node.attributes.url); showme(node.id,
			 * node.text, node.attributes.url); } else if (node && !node.leaf) {
			 * node.expand(true); } }) }
			 */
			click : function(node, event) {
				if (!node.isExpanded()) {
					node.expand();
				}

				if (Ext.getCmp('ddform')) {
					panel.remove(Ext.getCmp('ddform'), true);

				}

				newCatWindow.diparent = node.id;
				newCatWindow.dilevel = node.getDepth() + 1;
				ddIds = node.id;
				var ddform = new Ext.FormPanel({
							labelWidth : 120, // label settings here cascade
							id : 'ddform',
							frame : false,
							bodyStyle : 'border:0px; padding:5px;',
							width : 450,
							defaults : {
								width : 250
							},
							defaultType : 'textfield',

							items : [new Ext.form.TextField({
												fieldLabel : '索引类别名称',
												name : 'DI_NAME',
												allowBlank : false,
												width : 150,
												maxLength : 32
											}), new Ext.form.TextField({
												fieldLabel : '索引类别唯一标识',
												name : 'DI_KEY',
												width : 150,
												maxLength : 32
											}), new Ext.form.TextField({
												fieldLabel : '索引类别内部编码',
												width : 150,
												readOnly : true,
												style : {
													background : '#eeeeee'
												},
												name : 'DI_CODE'
											}), new Ext.form.TextField({
												fieldLabel : '索引类别拼音识别码',
												width : 150,
												name : 'DI_PYCODE'
											}), new Ext.form.TextField({
												fieldLabel : '索引类别外文识别码',
												width : 150,
												name : 'DI_YWCODE'
											}), new Ext.form.TextField({
												fieldLabel : '类别索引排序',
												width : 150,
												name : 'DI_ORDER'
											}), new Ext.form.RadioGroup({
												fieldLabel : '类别索引有效性',
												items : [{
															boxLabel : '有效',
															name : 'DI_VALID',
															id : 'divalid0',
															inputValue : '1'
														}, {
															boxLabel : '无效',
															id : 'divalid1',
															name : 'DI_VALID',
															inputValue : '0'
														}]
											}), new Ext.form.TextField({
												hidden : true,
												name : 'DI_ID'
											})],

							buttons : [{
								text : '保 存',
								id : 'btnSave',
								type : 'submit',
								handler : function() {
									if (ddform.getForm().isValid()) {
										var but = this;
										but.setDisabled(true);
										Ext.MessageBox.wait('提交保存过程中...');

										ddform.getForm().submit({
											url : context
													+ '/system/ddindex.do?method=save',
											method : "POST",
											success : function(form, action) {
												Ext.Msg.alert('提示', '已成功保存信息！');
												but.setDisabled(false);
												var pNode = tree
														.getSelectionModel()
														.getSelectedNode().parentNode;
												pNode.reload();
											},
											failure : function(form, action) {
												Ext.MessageBox.hide();
												Ext.Msg
														.alert('提示',
																'保存信息发生错误！');
											}
										});
									}
								}
							}]
						});

				if (node.id == "-1") {
					panel.getTopToolbar().items.items[0].enable();
					panel.getTopToolbar().items.items[2].disable();
					Ext.getCmp("btnSave").disable();
				} else {
					panel.getTopToolbar().items.items[0].enable();
					panel.getTopToolbar().items.items[2].enable();
					Ext.getCmp("btnSave").enable();

				}

				ddform.getForm().load({
							url : context + '/system/ddindex.do?method=edit',
							params : {
								id : node.id
							},
							waitTitle : '提示',
							waitMsg : '正在加载数据,请稍候...',
							animEl : "loding",
							success : function(form, action) {
								var resultInfo = action.result.data;

								var divalid = resultInfo.DI_VALID;

								if (divalid == '1') {
									Ext.get("divalid0").dom.checked = true;
								} else if (divalid == '0') {
									Ext.get("divalid1").dom.checked = true;
								}
							},
							failure : function(form, action) {
								Ext.Msg.alert('读取信息失败');
							}
						});

				panel.add(ddform);
				panel.doLayout();
			}

		}
	});

	tree.getRootNode().expand();

	var win = new Ext.Window({
				id : "win_" + id,
				title : tlt,
				closable : true,
				resizable : false,
				// maximizable : true,
				width : 700,
				height : 500,
				border : false,
				plain : true,
				layout : 'border',
				modal : true,
				items : [tree, panel]
			});

	win.show(this);

	/*
	 * 树节点reload
	 */
	var reloadTree = function(t) {
		tree.getNodeById(t.diparent).reload();
	}

	newCatWindow.on('okClicked', reloadTree, this);

}